package com.museum.base;


import com.museum.constants.Constants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;

import java.io.Serializable;


@Data
@Component
public class BaseApiService<T> implements Serializable {

    public BaseResponse<T> setResultError(Integer code, String msg) {
        return setResult(code, msg, null);
    }
    public BaseResponse<T> setResultSuccess(Integer code, String msg) {
        return setResult(code, msg, null);
    }
    // 返回错误，可以传msg
    public BaseResponse<T> setResultError(String msg) {
        return setResult(Constants.HTTP_RES_CODE_500, msg, null);
    }

    // 查询为空
    public BaseResponse<T> setResultNotFound(String msg) {
        return setResult(Constants.HTTP_RES_CODE_501, msg, null);
    }
    // 用户信息不存在
    public BaseResponse<T> setResultUserNotFound() {
        return setResult(Constants.HTTP_RES_CODE_NOTEXIT_203, "用户信息出错！", null);
    }
    // 参数接收出错！
    public BaseResponse<T> ParamError() {
        return setResult(Constants.HTTP_RES_CODE_202, "参数接收错误！", null);
    }

    // 返回成功，可以传data值
    public BaseResponse<T> setResultSuccess(T data) {
        return setResult(Constants.HTTP_RES_CODE_200, Constants.HTTP_RES_CODE_200_VALUE, data);
    }
    // 返回成功，可以传data值
    public BaseResponse<T> setResultSuccess(String msg,T data) {
        return setResult(Constants.HTTP_RES_CODE_200,msg, data);
    }

    // 返回成功，沒有data值
    public BaseResponse<T> setResultSuccess() {
        return setResult(Constants.HTTP_RES_CODE_200, Constants.HTTP_RES_CODE_200_VALUE, null);
    }

    // 返回成功，沒有data值
    public BaseResponse<T> setResultSuccess(String msg) {
        return setResult(Constants.HTTP_RES_CODE_200, msg, null);
    }


    // 通用封装
    public BaseResponse<T> setResult(Integer code, String msg, T data) {
        return new BaseResponse<T>(code, msg, data);
    }

    //调用数据库层判断
    public Boolean toDaoResult(int result) {
        return result > 0 ? true : false;
    }

}
